home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / sound / sndblst3.zip / WAVEINFO.C < prev    next >
Text File  |  1993-10-19  |  3KB  |  116 lines

  1.  
  2. //------------------------------------------------------------------------------
  3. // Copyright (c) David Welch, 1993
  4. //------------------------------------------------------------------------------
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. unsigned char min;
  11. unsigned char max;
  12. unsigned char ca;
  13. unsigned short ra;
  14. unsigned long la;
  15. FILE *fp;
  16. char gstring[80];
  17. unsigned long rID;
  18. unsigned long rLen;
  19. unsigned long wID;
  20. unsigned long fID;
  21. unsigned long fLen;
  22. unsigned long fNext;
  23. unsigned short wFormatTag;
  24. unsigned short nChannels;
  25. unsigned short nSamplesPerSec;
  26. unsigned short nAvgBytesPerSec;
  27. unsigned long dID;
  28. unsigned long dLen;
  29.  
  30. void main ( int argc, char *argv[] )
  31. {
  32.     if(argc==1)
  33.     {
  34.         printf(".WAV file not specified\n");
  35.         exit(1);
  36.     }
  37.     strcpy(gstring,argv[1]);
  38.     strcat(gstring,".WAV");
  39.     if((fp=fopen(gstring,"rb"))==0)
  40.     {
  41.         strcpy(gstring,argv[1]);
  42.         if((fp=fopen(gstring,"rb"))==0)
  43.         {
  44.             printf("Error opening .WAV file [%s]\n",argv[1]);
  45.             exit(1);
  46.         }
  47.     }
  48.     printf("FILE:  [%s]\n",gstring);
  49.     fread(&rID,1,4,fp);
  50.     if(rID!=0x46464952)
  51.     {
  52.         printf("Not a RIFF format file\n");
  53.         exit(1);
  54.     }
  55.     fread(&rLen,1,4,fp);
  56.     printf("rLen = %lu\n",rLen);
  57.     fread(&wID,1,4,fp);
  58.     if(wID!=0x45564157)
  59.     {
  60.         printf("Not a WAVE format chunk\n");
  61.         exit(1);
  62.     }
  63.     fread(&fID,1,4,fp);
  64.     if(fID!=0x20746D66)
  65.     {
  66.         printf("Not a fmt WAVE Format Chunk\n");
  67.         exit(1);
  68.     }
  69.     fread(&fLen,1,4,fp);
  70.     fNext=fLen+ftell(fp);
  71.     printf("fLen %lu\n",fLen);
  72.     printf("fNext %lu\n",fNext);
  73.     fread(&wFormatTag,1,2,fp);
  74.     if(wFormatTag!=1)
  75.     {
  76.         printf("Data is not PCM\n");
  77.     }
  78.     fread(&nChannels,1,2,fp);
  79.     printf("nChannels %u\n",nChannels);
  80.     fread(&nSamplesPerSec,1,2,fp);
  81.     printf("nSamplesPerSec %u\n",nSamplesPerSec);
  82.     fread(&nAvgBytesPerSec,1,2,fp);
  83.     printf("nAvgBytesPerSec %u\n",nAvgBytesPerSec);
  84.  
  85.  
  86. //*/fread(&ra,1,2,fp); printf("%04x %u\n",ra,ra);
  87. //*/fread(&ra,1,2,fp); printf("%04x %u\n",ra,ra);
  88. //*/fread(&ra,1,2,fp); printf("%04x %u\n",ra,ra);
  89. //*/fread(&ra,1,2,fp); printf("%04x %u\n",ra,ra);
  90.  
  91.     fseek(fp,fNext,0);
  92.     fread(&dID,1,4,fp);
  93.     if(dID!=0x61746164)
  94.     {
  95.         printf("Not a DATA chunk\n");
  96.         exit(1);
  97.     }
  98.     fread(&dLen,1,4,fp);
  99.     printf("dLen %lu\n",dLen);
  100.     min=0xFF;
  101.     max=0x00;
  102.     for(la=0;la<dLen;la++)
  103.     {
  104.         fread(&ca,1,1,fp);
  105.         if(ca>max) max=ca;
  106.         if(ca<min) min=ca;
  107.     }
  108.     printf("max %u\n",(unsigned char)max);
  109.     printf("min %u\n",(unsigned char)min);
  110. }
  111. //------------------------------------------------------------------------------
  112. // Copyright (c) David Welch, 1993
  113. //------------------------------------------------------------------------------
  114.  
  115.  
  116.